package cn.iocoder.yudao.module.enterprise.service.enterpriseCurriculumVitae;

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.enterprise.controller.admin.enterpriseCurriculumVitae.vo.EnterpriseCurriculumVitaeCreateReqVO;
import cn.iocoder.yudao.module.enterprise.controller.admin.enterpriseCurriculumVitae.vo.EnterpriseCurriculumVitaeExportReqVO;
import cn.iocoder.yudao.module.enterprise.controller.admin.enterpriseCurriculumVitae.vo.EnterpriseCurriculumVitaePageReqVO;
import cn.iocoder.yudao.module.enterprise.controller.admin.enterpriseCurriculumVitae.vo.EnterpriseCurriculumVitaeUpdateReqVO;
import cn.iocoder.yudao.module.enterprise.dal.dataobject.enterpriseCurriculumVitae.EnterpriseCurriculumVitaeDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 用户简历 Service 接口
 *
 * @author 周枫皓
 */
public interface EnterpriseCurriculumVitaeService {

    /**
     * 创建用户简历
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCurriculumVitae(@Valid EnterpriseCurriculumVitaeCreateReqVO createReqVO);

    /**
     * 更新用户简历
     *
     * @param updateReqVO 更新信息
     */
    void updateCurriculumVitae(@Valid EnterpriseCurriculumVitaeUpdateReqVO updateReqVO);

    /**
     * 删除用户简历
     *
     * @param id 编号
     */
    void deleteCurriculumVitae(Long id);

    /**
     * 获得用户简历
     *
     * @param id 编号
     * @return 用户简历
     */
    EnterpriseCurriculumVitaeDO getCurriculumVitae(Long id,Long recordId);

    /**
     * 获得用户简历
     *
     * @param id 编号
     * @return 用户简历
     */
    EnterpriseCurriculumVitaeDO getCurriculumVitae(Long id);

    /**
     * 获得用户简历列表
     *
     * @param ids 编号
     * @return 用户简历列表
     */
    List<EnterpriseCurriculumVitaeDO> getCurriculumVitaeList(Collection<Long> ids);

    /**
     * 获得用户简历分页
     *
     * @param pageReqVO 分页查询
     * @return 用户简历分页
     */
    PageResult<EnterpriseCurriculumVitaeDO> getCurriculumVitaePage(EnterpriseCurriculumVitaePageReqVO pageReqVO);
    PageResult<EnterpriseCurriculumVitaeDO> getEnterpriseCurriculumVitaePage(EnterpriseCurriculumVitaePageReqVO pageReqVO);

    /**
     * 获得用户简历列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 用户简历列表
     */
    List<EnterpriseCurriculumVitaeDO> getCurriculumVitaeList(EnterpriseCurriculumVitaeExportReqVO exportReqVO);

}
